工控網(wǎng)首頁
>

應(yīng)用設(shè)計(jì)

>

Intouch在煙草行業(yè)自動(dòng)化領(lǐng)域中的應(yīng)用

Intouch在煙草行業(yè)自動(dòng)化領(lǐng)域中的應(yīng)用

2003/10/20 13:49:00
[摘要] 本文介紹在南通醋酸纖維有限公司《動(dòng)力工段自控系統(tǒng)改造》項(xiàng)目中,分布式Intouch的應(yīng)用,以及Intouch與SQLSERVER2000和其它應(yīng)用程序共同組建整個(gè)管控系統(tǒng)。另外還介紹了一些Intouch組態(tài)的技巧。 1.系統(tǒng)簡介 《動(dòng)力工段自控系統(tǒng)改造》項(xiàng)目是對南纖公司原有動(dòng)力工段的自控系統(tǒng)進(jìn)行改造和優(yōu)化。目標(biāo)是充分利用原有軟硬件資源,用最少的投入獲得高效、安全的系統(tǒng)性能。 原動(dòng)力工段包括:化水車間、冷凍空壓車間(簡稱動(dòng)力車間)、軟水站及一二泵房車間,各自擁有自己的控制室。改造前,化水車間已采用了一套SIEMENS TI545 PLC和兩臺全點(diǎn)的INTOUCH操作站實(shí)現(xiàn)監(jiān)控,泵房車間也已采用了一套SIEMENS TI545 PLC和兩臺256點(diǎn)的INTOUCH操作站實(shí)現(xiàn)監(jiān)控,動(dòng)力車間除5臺壓縮空氣干燥器采用GE 90-30PLC控制外其余設(shè)備的監(jiān)控均用盤裝儀表實(shí)現(xiàn)。原動(dòng)力工段系統(tǒng)結(jié)構(gòu)如下圖所示。
系統(tǒng)改造后,泵房車間和動(dòng)力車間由原泵房車間的SIEMENS TI545 PLC控制(需增加一些卡件),化水車間在原系統(tǒng)基礎(chǔ)上增加一些功能。將原有的兩臺全點(diǎn)INTOUCH和一臺256點(diǎn)INTOUCH移入新設(shè)的集中控制室,實(shí)現(xiàn)三個(gè)車間的集中監(jiān)控,在化水車間設(shè)一臺256點(diǎn)INTOUCH操作站,供現(xiàn)場巡回檢查時(shí)使用。同時(shí)系統(tǒng)通過一臺新設(shè)的數(shù)據(jù)及Web服務(wù)器與公司管理網(wǎng)連接,公司和工段管理者可通過公司區(qū)域網(wǎng)獲取生產(chǎn)過程的數(shù)據(jù)和報(bào)表。
2.系統(tǒng)功能及特點(diǎn) 2.1冗余的總線及操作站 系統(tǒng)包含2臺全點(diǎn)的INTOUCH(SERVER1、SERVER2)和2臺256點(diǎn)的INTOUCH(CLIENT1、CLIENT2),SERVER1、SERVER2分別通過各自的TIWAY卡與化水、泵房的PLC構(gòu)成兩條冗余的TIWAY總線。CLIENT1、CLIENT2則通過遠(yuǎn)程變量訪問某臺全點(diǎn)INTOUCH上的數(shù)據(jù)從而實(shí)現(xiàn)對現(xiàn)場的監(jiān)控。通常CLIENT1、CLIENT2只與SERVER1、SERVE2中的一臺通訊,當(dāng)發(fā)生通訊故障時(shí)會(huì)自動(dòng)嘗試與另一臺SERVER連接。INTOUCH中的“通訊狀態(tài)”畫面顯示了各工作站、PLC及總線的當(dāng)前狀態(tài)。  
圖中紅線表示操作站在線,黑色表示離線。在CLIENT1、CLIENT2的“通訊狀態(tài)”畫面中,工程師可以手動(dòng)切換CLIENT與SERVER的連接。 2.2“瘦”操作站模式 256點(diǎn)的CLIENT通過遠(yuǎn)程變量訪問全點(diǎn)的SERVER從而訪問PLC,這樣CLIENT的變量配置不超過256點(diǎn)。同時(shí)系統(tǒng)運(yùn)用了“分布式報(bào)警”和“分布式歷史趨勢”等功能,所有的報(bào)警記錄及歷史趨勢都存儲在全點(diǎn)的SERVER上,CLIENT上顯示的報(bào)警和歷史趨勢是從SERVER上獲得的??梢哉f,SERVER充當(dāng)了INTOUCH服務(wù)器而CLIENT是一個(gè)INTOUCH客戶端,只需較低的配置即可。當(dāng)切換SERVER時(shí),“分布式報(bào)警”和“分布式歷史趨勢”也跟著自動(dòng)切換。 1.“分布式報(bào)警”的設(shè)置 在INTOUCH組態(tài)中需用“分布式報(bào)警”控件,在控件的報(bào)警查詢欄中輸入“\\SERVER1\INTOUCH!DONGLI”,SERVER1為缺省連接的計(jì)算機(jī)名,DONGLI表示INTOUCH中的DONGLI報(bào)警組(報(bào)警組包括DONGLI、HS)。在SERVER的計(jì)算機(jī)屬性需選中“本機(jī)將提供報(bào)警”;而在CLIENT的計(jì)算機(jī)屬性中需選中“本機(jī)將顯示報(bào)警”。運(yùn)行時(shí)CLIENT將通過函數(shù)切換與SERVER的連接。 為了統(tǒng)一報(bào)警設(shè)置,我們將報(bào)警做在PLC的報(bào)警模塊中通過對PLC變量“AHA(報(bào)警上限)、AHHA(報(bào)警上上限)、ALA(報(bào)警下限)、ALLA(報(bào)警下下限)、APV(報(bào)警過程值)、AVF(報(bào)警狀態(tài)字)”的讀寫來判斷和設(shè)置報(bào)警。有報(bào)警發(fā)生時(shí),只有SERVER會(huì)將報(bào)警信息寫入報(bào)警記錄,SERVER2在寫報(bào)警信息前先判斷SERVER1是否在運(yùn)行,以免重復(fù)寫入。 2.“分布式歷史趨勢”的設(shè)置(以SERVER1為例) 在SERVER的INTOUCH組態(tài)中需將歷史數(shù)據(jù)的存放路徑設(shè)為INTOUCH默認(rèn)路徑。CLIENT的INTOUCH組態(tài)需在“分布式名稱管理器”中的“分布式歷史”里添加一項(xiàng),供應(yīng)器名稱為“SERVER1”,路徑為“\\SERVER1\D\NCFC2000S1”(工程路徑)即可。在CLIENT中訪問SERVER1的歷史數(shù)據(jù)需寫成“SERVER1.TAGNAME”。SERVER2的設(shè)置與SERVER1相同。 3.遠(yuǎn)程變量的引用 在CLIENT上使用遠(yuǎn)程變量只需在變量名前加計(jì)算機(jī)名即可,無需在標(biāo)記名字典中新建變量,所以不占點(diǎn)數(shù)。(SERVER:TAGNAME) 4.自動(dòng)切換功能 CLIENT通過遠(yuǎn)程變量觀察SERVER上的$Second變量,若它在在一段時(shí)間內(nèi)無變化則表明與SERVER的連接出現(xiàn)問題,這時(shí)可通過SetAccessName函數(shù)將CLIENT上的遠(yuǎn)程變量切換到另一臺SERVER上。 2.3公用的操作窗口 系統(tǒng)中對于具有相同操作接口設(shè)備使用了公用的操作窗口,而不是對應(yīng)每個(gè)設(shè)備都創(chuàng)建一個(gè)操作窗口,這樣大大減少了窗口的數(shù)量。實(shí)現(xiàn)它需要用到間接變量,可以將間接變量看作一個(gè)指針,當(dāng)對某個(gè)設(shè)備操作時(shí),利用間接變量指向操作變量,這樣,對間接變量的賦值就會(huì)作用到操作變量上,操作變量的變化也會(huì)反應(yīng)到間接變量上。 以過濾水泵為例,在過濾水處理系統(tǒng)中,點(diǎn)擊3#過濾泵,彈出操作窗口,如下圖所示:
3#過濾泵的操作變量為“RUN-3#GLB(啟動(dòng))”、“STOP-3#GLB(停止)”、“RL-3#GLB(反饋)”、“AUTO-3#GLB(自動(dòng))”、“REPAIR-3#GLB(檢修)”點(diǎn)擊過濾泵時(shí)執(zhí)行語句: DL_START.NAME=RUN-3#GLB.NAME; DL_STOP.NAME=STOP-3#GLB.NAME; DL_RL.NAME = RL-3#GLB.NAME; AUTO.NAME = AUTO-3#GLB.NAME; DL_REPAIR.NAME=REPAIR-3#GLB.NAME; “DL_XXX”為間接變量。在操作窗口中只需對間接變量賦值即可。例如在“啟動(dòng)”按鈕的動(dòng)作屬性中寫到: IF DL_START.Name<>"NULL" AND DL_STOP.Name<>"NULL" THEN DL_START=1; DL_STOP=0; Record=DL_START.Comment; SQLInsert( ConnectionId, "CortrolLog", "CortrolLog" ); //寫操作紀(jì)錄 ELSE IF DL_START.Name = = "NULL" THEN DL_STOP=0; Record=StringLeft( DL_STOP.Comment, StringLen( DL_STOP.Comment )/2 ); SQLInsert( ConnectionId, "CortrolLog", "CortrolLog" ); ELSE DL_START=1; Record=StringLeft( DL_START.Comment, StringLen( DL_START.Comment )/2 ); SQLInsert( ConnectionId, "CortrolLog", "CortrolLog" ); ENDIF; ENDIF; 因?yàn)樵O(shè)備的啟停一般有兩種:1.啟動(dòng)與停止是一個(gè)輸出;2.啟動(dòng)與停止是兩個(gè)輸出。為一個(gè)輸出時(shí)我們將輸出變量的COMMENT屬性寫為“XXX啟動(dòng)XXX停止”這樣,在寫操作記錄時(shí)需取COMMENT的左一半或右一半;若為兩個(gè)輸出時(shí),變量的COMMENT將為“XXX啟動(dòng)”或“XXX停止”,寫記錄時(shí)取對應(yīng)變量的COMMENT即可。 CLIENT的情況比較特殊,因?yàn)镃LIENT需用間接變量指向遠(yuǎn)程變量,而遠(yuǎn)程變量的COMMENT無法賦給間接變量的COMMENT,所以為了在公用窗口中獲得遠(yuǎn)程變量的COMMENT我們只能利用間接變量的NAME(即遠(yuǎn)程變量的NAME)在數(shù)據(jù)庫中查找到COMMENT,再寫操作記錄。語句如下:(寫記錄的操作參見“數(shù)據(jù)庫的應(yīng)用”。注意:以下中文單引號請?zhí)鎿Q為英文單引號) IF DL_START.Name<>"NULL" AND DL_STOP.Name<>"NULL" THEN DL_START=1; DL_STOP=0; Record=StringRight( DL_START.Name ,StringLen( DL_START.Name )-7 ); SQLSelect( ConnectionId, "COMM", "COMMENT", "device_id="+"’"+Record + "’" , "" ); //查找COMMENT SQLFirst( ConnectionId ); Record=StringTrim( COM, 3 ); SQLEnd( ConnectionId ); SQLInsert( ConnectionId, "CortrolLog", "CortrolLog" ); //寫操作紀(jì)錄 ELSE IF DL_START.Name=="NULL" THEN DL_STOP=0; Record=StringRight( DL_STOP.Name ,StringLen( DL_STOP.Name )-7 ); SQLSelect( ConnectionId, "COMM", "COMMENT", "device_id="+"’"+Record + "’" , "" ); SQLFirst( ConnectionId ); Record=StringTrim( COM, 3 ); Record=StringLeft( Record, StringLen( Record )/2 ); SQLEnd( ConnectionId ); SQLInsert( ConnectionId, "CortrolLog", "CortrolLog" ); ELSE DL_START=1; Record=StringRight( DL_START.Name ,StringLen( DL_START.Name )-7 ); SQLSelect( ConnectionId, "COMM", "COMMENT", "device_id="+"’"+Record + "’" , "" ); SQLFirst( ConnectionId ); Record=StringTrim( COM, 3 ); Record=StringLeft( Record, StringLen( Record )/2 ); SQLEnd( ConnectionId ); SQLInsert( ConnectionId, "CortrolLog", "CortrolLog" ); ENDIF; ENDIF; 2.4數(shù)據(jù)庫的應(yīng)用 系統(tǒng)中的IBM服務(wù)器作為數(shù)據(jù)存儲和發(fā)布的服務(wù)器,安裝了SQL SERVER 2000,系統(tǒng)的報(bào)警歷史記錄和操作記錄以及設(shè)備檔案都存放在名為“DL” 的數(shù)據(jù)庫中。 2.4.1 ODBC的連接 INTOUCH 通過ODBC訪問SQL SERVER,在ODBC中建立名為“DL”的用戶DSN,在INTOUCH中用語句: SQLConnect( ConnectionId, "DSN=DL"); 建立連接,若連接成功則ConnectionId > 0 。在執(zhí)行每一條SQL語句時(shí)都會(huì)有一個(gè)返回值,若返回值為0則表示執(zhí)行成功,否則表示與數(shù)據(jù)庫連接不正常,需重新建立連接。為了時(shí)刻檢測與數(shù)據(jù)庫服務(wù)器的連接情況,在應(yīng)用程序腳本中每5秒鐘執(zhí)行一條查詢語句: IF ResultCode
投訴建議

提交

查看更多評論
其他資訊

查看更多

超越傳統(tǒng)直覺,MATLAB/Simulink助力重型機(jī)械的智能化轉(zhuǎn)型

新大陸自動(dòng)識別精彩亮相2024華南國際工業(yè)博覽會(huì)

派拓網(wǎng)絡(luò)被Forrester評為XDR領(lǐng)域領(lǐng)導(dǎo)者

智能工控,存儲強(qiáng)基 | 海康威視帶來精彩主題演講

展會(huì)|Lubeworks路博流體供料系統(tǒng)精彩亮相AMTS展會(huì)